package com.boardgamelib.base.system;

import java.util.ArrayList;
import java.util.List;

import com.boardgamelib.entity.Giocatore;
import com.boardgamelib.entity.StatoGioco;
import com.boardgamelib.system.SistemaGiocatori;

public class SistemaGiocatoriGenerico<G extends Giocatore> implements SistemaGiocatori<G>{
	
	private List<G> giocatori;
	
	public SistemaGiocatoriGenerico() {
		giocatori = new ArrayList<G>();
	}

	public List<G> getGiocatori() {
		return giocatori;
	}

	public void aggiungiGiocatore(G giocatore) {
		giocatori.add(giocatore);
	}

	public G getGiocatore(String nome) {
		for (G g : giocatori) {
			if (g.getNome().equals(nome)) {
				return g;
			}
		}
		return null;
	}
	
	public boolean uguali(G giocatore1, G giocatore2) {
		// TODO Auto-generated method stub
		return giocatore1.getNome().equals(giocatore2.getNome());
	}
	
	public G getProssimo(StatoGioco<G> statoPrecedente) {
		if (statoPrecedente == null || statoPrecedente.getProssimo() == null) {
			return giocatori.get(0);
		} else {
			boolean found = false;
			for (G g : giocatori) {
				if (found) {
					return g;
				}
				if (uguali(g, statoPrecedente.getProssimo())) {
					found = true;
				}
			}
			return giocatori.get(0);
		}
	}
}
